"""
LeetCode 热题

给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
请注意 ，必须在不复制数组的情况下原地对数组进行操作。
"""


class Solution(object):
    def moveZeroes(self, nums):
        """
        将数组中的所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
        注意：必须在不复制数组的情况下原地对数组进行操作。

        参数:
        nums (List[int]): 整数数组

        返回:
        None: 直接修改输入数组
        """
        # 初始化非零元素的索引
        non_zero_index = 0

        # 将所有非零元素移动到数组的前面
        for i in range(len(nums)):
            if nums[i] != 0:
                nums[non_zero_index] = nums[i]
                non_zero_index += 1

        # 将剩余的位置填充为0
        for i in range(non_zero_index, len(nums)):
            nums[i] = 0

        return nums



if __name__ == '__main__':
    a = Solution()
    nums = [0, 1, 0, 3, 12]
    print(a.moveZeroes(nums))
